/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at http://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 * $Id: strdup.c,v 1.6 2008-09-06 05:29:06 yangtse Exp $
 ***************************************************************************/

#include "setup.h"
#include "strdup.h"

#ifndef HAVE_STRDUP
char *curlx_strdup(const char *str)
{
	size_t len;
	char *newstr;

	if (!str)
		return (char *)NULL;

	len = strlen(str);

	if (len >= ((size_t) - 1) / sizeof(char))
		return (char *)NULL;

	newstr = malloc((len + 1) * sizeof(char));
	if (!newstr)
		return (char *)NULL;

	MEMCPY(newstr, str, (len + 1)*sizeof(char));

	return newstr;

}
#endif
